package org.jeecg.modules.student.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiOperation;
import org.apache.ibatis.annotations.Param;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.common.baseentity.BaseApiEntity;
import org.jeecg.modules.student.entity.StuStudent;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.student.entity.StuStudentDemo;
import org.jeecg.modules.student.vo.StuStudentVo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * @Description: stu_student
 * @author: baochangrong
 * @Date:   2022-02-10
 * @Version: V1.0
 */
public interface IStuStudentService extends IService<StuStudent> {
    List<StuStudent> noClassStudentsList(String tenantId);
    /**
     * 学生相关  全查询
     */
    List<StuStudent> classStudentQueryAll(String tenantId);
    /**
     * 年级班级学生列表查询
     */
    IPage<StuStudentVo> gradeclassStudentListQueryAll(Page<StuStudentVo> page, String tenantId);
    IPage<StuStudentVo> queryStuStudentVoLists(Page<StuStudentVo> page, @Param("queryParam") Map<String, String> queryParam, @Param("stuStudentVo")  StuStudentVo stuStudentVo );
    Result<List<Map>> listBatchNumber(@Param("stuStudentVo")  StuStudentVo stuStudentVo );
    StuStudent getStuStudentByUserId(String userId);

    /**
     * 批量创建用户登录账号
     * @param tenantId
     * @param password
     * @param ids
     * @param loginUser
     * @return
     */
    boolean createUserByStudentIds(String tenantId,String password,String  ids, LoginUser loginUser,boolean force);

    /**
     * 根据id查询学生列表
     * @param ids
     * @return
     */
    List<StuStudent> getStudentListByIds(String ids);

    ModelAndView exportXlsDemo(HttpServletRequest request, StuStudentDemo object, String title, String secondTitle, ISysBaseAPI sysBaseAPI, JSONObject DictList);

    Result<?> importExcelDemo(HttpServletRequest request, HttpServletResponse response, IStuStudentService stuStudentService, BaseApiEntity baseApiEntity);
}
